package com.wangshouyu.mp.base.request;

import com.wangshouyu.mp.utils.GsonUtils;

import java.lang.reflect.Type;

/**
 * @author 王守钰
 * @date 2020年12月06日 21:26
 * @description 解码处理
 */
public interface Decoder {

    /**
     * 解码返回类信息
     * @param response 响应
     * @param type 类型
     * @return
     * @throws Exception
     */
    default Object decode(MpResponse response, Type type) throws Exception{
        if(response == null || null == response.getBody()){
            return null;
        }
        return GsonUtils.fromJson(response.getBody().reader(ResponseBody.UTF_8), type);
    }

    /**
     * 解码返回当前对象
     * @param response 响应数据
     * @param <T> 
     * @return 当前对象
     */
    default <T> T decode(MpResponse response, Class<T> clazz) throws Exception{
        if(response == null || null == response.getBody()){
            return null;
        }
        return GsonUtils.fromJson(response.getBody().reader(ResponseBody.UTF_8), clazz);
    }
}
